package main

import "fmt"

func main() {
	// 一个布尔类型的值只有两种：true 或 false。
	// if 和 for 语句的条件部分都是布尔类型的值，并且 == 和 < 等比较操作也会产生布尔型的值
	var b bool = true
	fmt.Println("b is ", b)
	fmt.Println("!b is ", !b)
	fmt.Println(3 > 2)
	fmt.Println(3 < 2)
	fmt.Println(3 == 2)
	// 布尔值可以和 &&（AND）和 ||（OR）操作符结合，并且有短路行为
	fmt.Println(true && false)
	fmt.Println(true || false)

	// 布尔值并不会隐式转换为数字值 0 或 1，反之亦然，必须使用 if 语句显式的进行转换：
	if b {
		fmt.Println("b is true")
	} else {
		fmt.Println("b is false")
	}

	// Go语言中不允许将整型强制转换为布尔型
	// var b2 bool = bool(1) // 编译错误
}
